package cn.lingyangwl.agile.misc.order.model.entity;

import cn.lingyangwl.agile.model.*;
import cn.lingyangwl.agile.tenant.core.*;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单明细
 * 商品可能被修改、删除等，因此这里要记录下单时用户关注的商品交易摘要信息，如价格、数量、型号、型号参数等。
 * 这样就算后来商品被删除了，用户在查看历史订单的时候也依然能看到商品的快照信息。
 * @author shenguangyang
 */
@Getter
@Setter
@TableName("om_order_detail")
@DataIsolation(tableName = "om_order_detail", filterTenant = true, filterMainTenant = true)
public class OrderDetail extends BasePlusPO {
	private Long id;
	
	/**
	 * 订单id
	 */
	private Long orderId;
	
	/**
	 * 订单编号
	 */
	private String orderNo;
	
	/**
	 * 商品id
	 */
	private Long goodsId;
	
	/**
	 * 商品sku id
	 */
	private Long skuId;
	
	/**
	 * 商品sku名称
	 */
	private String skuName;
	
	/**
	 * 商品sku内容
	 */
	private String skuData;
	
	/**
	 * 商品内容
	 */
	private String goodsData;
	
	/**
	 * 商品编号
	 */
	private String skuNo;
	
	/**
	 * 商品价格
	 */
	private BigDecimal price;
	
	/**
	 * 商品成本价
	 */
	private BigDecimal costPrice;
	
	/**
	 * 购买数量
	 */
	private Integer number;
	
	/**
	 * 商品总价格
	 */
	private BigDecimal goodsTotalPrice;
	
	/**
	 * 成本总价格
	 */
	private BigDecimal goodsCostPrice;
	
	/**
	 * 商品种类(1.实物 2.虚拟3.卡券)
	 */
	private String goodsType;
	
	/**
	 * 配送状态
	 */
	private String deliveryStatus;
	
	/**
	 * 配送单号
	 */
	private String deliveryNo;
	
	/**
	 * 退款编号
	 */
	private String refundNo;
	
	/**
	 * 退款状态
	 */
	private String refundStatus;
	
	/**
	 * 退款金额
	 */
	private BigDecimal refundApplyPrice;
	
	/**
	 * 退款申请金额
	 */
	private String refundReason;
	
	/**
	 * 实际退款金额
	 */
	private BigDecimal refundRealPrice;
	
	/**
	 * 实际退款时间
	 */
	private LocalDateTime refundTime;
	
	/**
	 * 退款驳回原因
	 */
	private String refundRefuseReason;
	
	/**
	 * 退款说明
	 */
	private String refundRemark;
	
	/**
	 * 退货地址
	 */
	private String refundAddress;
	
	/**
	 * 是否返还库存
	 */
	private Boolean isRefundStock;
	
	/**
	 * 退款方式   1. 原路退款 2. 线下退款 3. 退款到余额
	 */
	private String refundPriceType;
	
	/**
	 * 商家主动退款（0否  1是）
	 */
	private Boolean shopActiveRefund;
	
	/**
	 * 商家退款说明
	 */
	private String shopRefundRemark;
	
	/**
	 * 优惠金额
	 */
	private BigDecimal promotionPrice;
	
	/**
	 * 优惠券金额
	 */
	private BigDecimal couponPrice;

    public static LambdaQueryWrapper<OrderDetail> lqw() {
		return Wrappers.lambdaQuery();
	}
}
